
public class PredatorAgent extends Agent {

	public PredatorAgent( int __x, int __y, World __w )
	{
		super(__x,__y,__w);
		
		_type = 1;
	}
	
	public void step( )
	{
		// met a jour l'agent
	
		if (_alive) {

			int cellColor[] = _world.getCellState(_x, _y);

			cellColor[redId] = 255;
			cellColor[greenId] = 240;
			cellColor[blueId] = 225;

			_world.setCellState(_x, _y, cellColor);

			if (Math.random() > 0.5) // au hasard
				_orient = (_orient + 1) % 4;
			else
				_orient = (_orient - 1 + 4) % 4;

			// met a jour: la position de l'agent (depend de l'orientation)
			switch (_orient) {
			case 0: // nord	
				_y = (_y - 1 + _world.getHeight()) % _world.getHeight();
				break;
			case 1: // est
				_x = (_x + 1 + _world.getWidth()) % _world.getWidth();
				break;
			case 2: // sud
				_y = (_y + 1 + _world.getHeight()) % _world.getHeight();
				break;
			case 3: // ouest
				_x = (_x - 1 + _world.getWidth()) % _world.getWidth();
				break;
			}

			// verifie si il y a une (des) proie(s) sur la case

			for (int i = 0; i != _world.agents.size(); i++) {
				Agent a = _world.agents.get(i);
				if (a.getType() == 0) // on regarde seulement les proies
				{
					if (a._x == _x && a._y == _y) {
						a._alive = false; // miam.
					}
				}

			}

			// si trop age, meurt -- en fait: chance de mourir proportionnelle a l'age 

			if ( Math.random() < ( (double)_age / 60000.0 ) )
				_alive = false;

			_age++;

		}
	}
	
}
